package demo02;

/**
 * @author: WangPeng
 * @createTime: 2022/11/03 17:11
 * @description:
 * @version: v1.0
 */
public class Test01 {
    public static void main(String[] args) {
        //方法一:使用匿名内部类
        Eat eat1 = new Eat(){
            @Override
            public void first() {
                System.out.println("====这是匿名内部类");
            }
        };
        fun(eat1);
        //方法二:使用lambda表达式
        //如果执行语句只有一句，且无返回值，{}可以省略；
        //若有返回值，则若想省去{}，则必须同时省略return，且执行语句也保证只有一句
//        Eat eat2 = ()->{ System.out.println("====lambda表达式"); };
        Eat eat2 = ()->System.out.println("====lambda表达式");
        fun(eat2);
    }
    //定义一个方法---传递的参数为接口类型---函数式接口
    public static void fun(Eat eat){
        eat.first();
    }
}

//定义一个无参无返回值的函数式接口
@FunctionalInterface
interface Eat{
    public void first();
}